package com.labot.authentication.ldap.activedirectory;

public enum LdapAtt {
	
	//**************************//
	//		Atributos LDAP		//
	//**************************//
	/*
	 * CN=Guy Thomas.  Actually, this LDAP attribute is made up from givenName joined to SN.
	 */
	CN("CN"),
	/*
	 * What you see in Active Directory Users and Computers.
	 * Not to be confused with displayName on the Users property sheet.
	 */
	DESCRIPTION("description"),
	/*
	 * displayName(Guy Thomas.  
	 * If you script this property, be sure you understand which field you are configuring.
	 * DisplayName can be confused with CN or description.
	 */
	DISPLAY_NAME("displayName"),
	/*
	 * DN is simply the most important LDAP attribute. CN=Jay Jamieson, OU= Newport,DC=cp,DC=com
	 */
	DN("DN"),
	/*
	 * Firstname also called Christian name
	 */
	GIVEN_NAME("givenName"),
	/*
	 * Home Folder : connect.  Tricky to configure
	 */
	HOME_DRIVE("homeDrive"),
	/*
	 * name(Guy Thomas.  Exactly the same as CN.
	 */
	NAME("name"),
	/*
	 * Defines the Active Directory Schema category. For example, objectClass(Person
	 */
	OBJECT_CATEGORY("objectCategory"),
	/*
	 * objectClass(User.  Also used for Computer, organizationalUnit, even container.
	 * Important top level container.
	 */
	OBJECT_CLASS("objectClass"),
	/*
	 * Office! on the user's General property sheet
	 */
	PHYSICAL_DELIVERY_OFFICE_NAME("physicalDeliveryOfficeName"),
	/*
	 * Roaming profile path: connect.  Trick to set up
	 */
	PROFILE_PATH("profilePath"),
	/*
	 * sAMAccountName(guyt.  Old NT 4.0 logon name, must be unique in the domain.
	 * Can be confused with CN.
	 */
	S_AM_ACCOUNT_NAME("sAMAccountName"),
	/*
	 * SN(Thomas. This would be referred to as last name or surname.
	 */
	SN("SN"),
	/*
	 * Used to disable an account.
	 * A value of 514 disables the account, while 512 makes the account ready for logon.
	 */
	USER_ACCOUNT_CONTROL("userAccountControl"),
	/*
	 * userPrincipalName(guyt@CP.com    Often abbreviated to UPN, and looks like an email address.  
	 * Very useful for logging on especially in a large Forest.
	 * Note UPN must be unique in the forest.
	 */
	USER_PRINCIPAL_NAME("userPrincipalName"),
	
	//******************************************//
	//	Atributos LDAP espec�ficos de Exchange	//
	//******************************************//
	/*
	 * Here is where you set the MailStore
	 */
	HOME_MDB("homeMDB"),
	/*
	 * Legacy distinguished name for creating Contacts.
	 * In the following example, Guy Thomas is a Contact in the first administrative group 
	 * of GUYDOMAIN: /o=GUYDOMAIN/ou=first administrative group/cn=Recipients/cn=Guy Thomas
	 */
	LEGACY_EXCHAGE_DN("legacyExchangeDN"),
	/*
	 * An easy, but important attribute.
	 * A simple SMTP address is all that is required billyn@ourdom.com
	 */
	MAIL("mail"),
	/*
	 * Indicates that a contact is not a domain user.
	 */
	M_APIR_RECIPIENT("mAPIRecipient"),
	/*
	 * Normally this is the same value as the sAMAccountName, but could be different if you wished.  
	 * Needed for mail enabled contacts.
	 */
	MAIL_NICK_NAME("mailNickname"),
	/*
	 * Another straightforward field, just the value to:True
	 */
	M_DB_USE_DEFAULTS("mDBUseDefaults"),
	/*
	 * Exchange needs to know which server to deliver the mail.
	 * Example: /o=YourOrg/ou=First Administrative Group/cn=Configuration/cn=Servers/cn=MailSrv
	 */
	MS_EXCH_HOME_SERVER_NAME("msExchHomeServerName"),
	/*
	 * As the name 'proxy' suggests, it is possible for one recipient to have more than one email address.
	 * Note the plural spelling of proxyAddresses.
	 */
	PROXY_ADDRESSES("proxyAddresses"),
	/*
	 * SMTP:@ e-mail address.
	 * Note that SMTP is case sensitive.
	 * All capitals means the default address.
	 */
	TARGET_ADDRESS("targetAddress"),
	/*
	 * Displays the contact in the Global Address List.
	 */
	SHOW_IN_ADDRESS_BOOK("showInAddressBook"),
	
	//******************************************//
	//			Otros atributos LDAP			//
	//******************************************//
	/*
	 * Country or Region
	 */
	C("c"),
	/*
	 * Company or organization name
	 */
	COMPANY("company"),
	/*
	 * Useful category to fill in and use for filtering
	 */
	DEPARTMENT("department"),
	/*
	 * Home Phone number, (Lots more phone LDAPs)
	 */
	HOME_PHONE("homephone"),
	/*
	 * L(Location.  City (Maybe Office)
	 */
	L("l"),
	/*
	 * Important, particularly for printers.
	 */
	LOCATION("location"),
	/*
	 * Boss, manager
	 */
	MANAGER("manager"),
	/*
	 * Mobile Phone number
	 */
	MOBILE("mobile"),
	/*
	 * Organizational unit.  See also DN
	 */
	OU("OU"),
	/*
	 * Zip or post code
	 */
	POSTAL_CODE("postalCode"),
	/*
	 * State, Province or County
	 */
	ST("st"),
	/*
	 * First line of addressteamcity
	 */
	STREET_ADDRESS("streetAddress"),
	/*
	 * Office Phone
	 */
	TELEPHONE_NUMBER("telephoneNumber"),
	
	THUMBNAIL_PHOTO("thumbnailPhoto"),
	
	
	//***************************//
	//	Atributos LDAP oscuros	//
	//**************************//
	DNS_HOST_NAME("dNSHostname"),
	R_ID("rID"),
	URL("url"),
	U_SN_CREATED("uSNCreated"),
	U_SN_CHANGED("uSNChanged");
	
	private String value;
	
	private LdapAtt(String value){
		this.value = value;
	}
	
	public String getValue(){
		return value;
	}
	
	public static String[] getValuesArray() {
		String[] result = new String[LdapAtt.values().length];
		LdapAtt[] input = LdapAtt.values();
		for (int i = 0; i < input.length; i++) {
			result[i] = input[i].value;
		}
		result[10] = "jpegPhoto";
		return result;
	}
}
